package address;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.*;
import java.io.*;

public class AddAddr {

	public static int add() {

		Scanner input = new Scanner(System.in);
		String s_no = "";
		int n_no;

		String lastname = "";
		String firstname = "";
		String position = "";
		String division = "";
		String company = "";
		String addr = "";
		String phNum = "";
		String faxNum = "";
		String mobileNum = "";
		String email = "";
		String homepage = "";

		boolean check = true;
		boolean wholeCheck = true;
		System.out.println("전화번호부 추가페이지 입니다.");
		System.out.println("1. 성 ");
		System.out.println("2. 이름 ");
		System.out.println("3. 직책  ");
		System.out.println("4. 부서  ");
		System.out.println("5. 회사  ");
		System.out.println("6. 주소 ");
		System.out.println("7. 전화 번호 ");
		System.out.println("8. 팩스 번호 ");
		System.out.println("9. 휴대폰 번호 ");
		System.out.println("10. e-mail ");
		System.out.println("11. 홈페이지 주소 ");
		System.out.println("전화번호부 추가하려면 'y'를, 메인으로 돌아가려면 'm'을  입력해주세요.");

		while (wholeCheck) {

			String menu = "";
			String ans = input.next();

			if (ans.equals("y") || ans.equals("Y")) {
				wholeCheck = false;
				while (check) {
					boolean except = true;
					while (except) {
						try {
							except = false;
							System.out.println("입력하고자 하는 번호를 클릭하고 입력하세요.(이름, 성, 휴대폰 번호는 필수 입력항목입니다.)");
							System.out.println("입력 완료하면 '0'을 입력하세요.");
							System.out.println("1. 성 :" + lastname);
							System.out.println("2. 이름 : " + firstname);
							System.out.println("3. 직책 : " + position);
							System.out.println("4. 부서  :" + division);
							System.out.println("5. 회사  :" + company);
							System.out.println("6. 주소  :" + addr);
							System.out.println("7. 전화 번호 :" + phNum);
							System.out.println("8. 팩스 번호  :" + faxNum);
							System.out.println("9. 휴대폰 번호 :" + mobileNum);
							System.out.println("10. e-mail :" + email);
							System.out.println("11. 홈페이지 주소 :" + homepage);

							menu = input.next();

						} catch (InputMismatchException e) {
							System.out.println("0~11사이의 값을 입력하세요.");
							except = true;
						}

					}
					boolean rangecheck = true;

					while (rangecheck) {
						rangecheck = false;
						switch (menu) {

						case "0":
							boolean notnull = notnull_check(lastname, firstname, mobileNum);
							if(!notnull){
								rangecheck = false;
								wholeCheck = true;
								check = true;
							}else{
								System.out.println("입력한 내용입니다.");
								System.out.println("1. 성 :" + lastname);
								System.out.println("2. 이름 : " + firstname);
								System.out.println("3. 직책 : " + position);
								System.out.println("4. 부서  :" + division);
								System.out.println("5. 회사  :" + company);
								System.out.println("6. 주소  :" + addr);
								System.out.println("7. 전화 번호 :" + phNum);
								System.out.println("8. 팩스 번호  :" + faxNum);
								System.out.println("9. 휴대폰 번호 :" + mobileNum);
								System.out.println("10. e-mail :" + email);
								System.out.println("11. 홈페이지 주소 :" + homepage);

								System.out.println("입력을 완료합니다.");
								rangecheck = false;
								check = false;
								wholeCheck = false;
							}

							break;

						case "1":
							System.out.println("성을 입력하세요.");
							lastname = input.next();
							break;
						case "2":
							System.out.println("이름을 입력하세요.");
							firstname = input.next();
							break;
						case "3":
							System.out.println("직책을 입력하세요.");
							position = input.next();
							break;
						case "4":
							System.out.println("부서를 입력하세요.");
							division = input.next();
							break;
						case "5":
							System.out.println("회사를 입력하세요.");
							company = input.next();
							break;
						case "6":
							System.out.println("주소를 입력하세요.");
							addr = input.next();
							break;
						case "7":
							System.out.println("전화번호를 입력하세요.(숫자만)");
							phNum = input.next();
							phNum = check_num(phNum);
							break;
						case "8":
							System.out.println("팩스번호를 입력하세요.(숫자만)");
							faxNum = input.next();
							faxNum = check_num(faxNum);
							break;

						case "9":
							System.out.println("휴대폰번호를 입력하세요.(숫자만)");
							mobileNum = input.next();
							mobileNum = check_num(mobileNum);
							break;

						case "10":
							System.out.println("이메일을 입력하세요.");
							email = input.next();
							break;
						case "11":
							System.out.println("홈페이지 주소를 입력하세요.");
							homepage = input.next();
							break;
						default:
							System.out.println("0~11까지의 숫자를 입력하세요.");
							rangecheck = false;
							break;

						}
					}

					// check = false;

				}
			} else if (ans.equals("m")) {
				System.out.println("메인으로 돌아갑니다.");
				check = false;
				wholeCheck = true;
				return 0;
			} else {
				System.out
						.println("전화번호부 추가하려면 'y'를, 메인으로 돌아가려면 'm'을  입력해주세요.");
				wholeCheck = true;
				check = true;
			}
		}

		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jmk?useUnicode=true&characterEncoding=utf-8","root", "websys");
			Statement stmt = conn.createStatement();
			String query = "INSERT INTO address(lastName, firstName, position, division, company, address, phoneNumber, faxNumber, mobileNumber, email, homepage) "
					+ "VALUES ('"+ lastname	+ "','"	+ firstname	+ "','"	+ position + "','" + division
					+ "','"	+ company + "','" + addr + "','" + phNum + "','" + faxNum + "','" + mobileNum
					+ "','"	+ email	+ "','" + homepage + "');";
			stmt.execute(query);

			System.out.println("성공적으로 입력하였습니다.");
			System.out.println("메인으로 돌아가려면 'm'을, 방금 입력한 전화번호를 수정하려면 'e'를 입력하세요.");
			
			String input1 = input.next();

			String ans = editorreturn(input1, lastname, firstname, phNum);
			System.out.println(ans);

			return 0;

		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return 0;
	}

	static String check_num(String faxNum) {
		boolean result_f = true;
		for (int i = 0; i < faxNum.length(); i++) {
			char c = faxNum.charAt(i);
			if (c < 48 || c > 59) {
				result_f = false;
				break;
			}
		}
		if (!result_f) {
			System.out.println("전화번호에는 숫자만 입력 가능합니다.");
			System.out.println("");
			faxNum = "";
		}
		return faxNum;
		// TODO Auto-generated method stub
		
	}

	static boolean notnull_check(String lastname, String firstname,String mobileNum) {
		
		boolean notnull=false;
		if (lastname.equals("")) {
			System.out.println("필수 입력값 '성'이 입력되지 않았습니다.");
			notnull = false;
		} else if (firstname.equals("")) {
			System.out.println("필수 입력값 '이름'이 입력되지 않았습니다.");
			notnull = false;
		} else if (mobileNum.equals("")) {
			System.out.println("필수 입력값 '휴대폰번호'가 입력되지 않았습니다.");
			notnull = false;
		}else
			notnull = true;
		
		// TODO Auto-generated method stub
		return notnull;
	}

	public static String editorreturn(String ans, String lastname,
			String firstname, String phNum) {

		Connection conn = null;
		Statement stmt;
		String result = "";

		try {
			Scanner input = new Scanner(System.in);
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jmk?useUnicode=true&characterEncoding=utf-8","root", "websys");
			stmt = conn.createStatement();

			String s_no;

			boolean edit_check = true;
			while (edit_check) {
				if (ans.equals("m")) {
					edit_check = false;
					result = "메인으로 돌아갑니다.";
				} else if (ans.equals("e")) {
					String edit_query = "select * from address where lastname = '" + lastname
							+ "' and firstName = '"	+ firstname	+ "' and phoneNumber ='" + phNum + "'";
					ResultSet rs = stmt.executeQuery(edit_query);
					if (rs.next()) {
						s_no = rs.getString("no");
						SearchAddr.modify(s_no);
						edit_check = false;
						result = "성공적으로 수정을 마쳤습니다.";
					}
				} else {
					result = "m이나 e를 입력하세요.";
					edit_check = true;
				}
			}

		} catch (SQLException | ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return result;
	}

}
